#include <Arduino.h>
#include <U8g2lib.h>
#include <Wire.h>

U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/U8X8_PIN_NONE);

short x, x_trg; // 橫向滚动，x当前数值，x_trg目标坐标值
short y, y_trg; // 纵向滚动，y当前数值，y_trg目标坐标值
int state;

int ui_run(short *a, short *a_trg)
{
  if (*a < *a_trg)
  {
    *a += 1;
  }
  else if (*a > *a_trg)
  {
    *a -= 1;
  }
  else
  {
    return 0; // 未达到目标值
  }
  return 1; // 到达目标值
}
typedef struct
{
  char *str;
} SETTING_LIST;
SETTING_LIST list[] = {
    {"list_a"},
    {"list_b"},
    {"list_b"},
};

void setup(void)
{
  u8g2.begin();
  x_trg = 64;
  y_trg = 64;
}

void loop(void)
{
  int list_len = sizeof(list)/sizeof(SETTING_LIST);
  for(int i=0;i<list_len;i++){
    u8g2.drawStr(x,y+i*16,list[i].str);
  }

  u8g2.clearBuffer();                 // 清除内部缓冲区
  u8g2.setFont(u8g2_font_ncenB08_tr); // 设置字体
  // u8g2.drawStr(x, 10, "Hello World!");       // 横向滚动
  u8g2.drawStr(10, y, "Hello World!"); // 纵向滚动
  delay(20);                           // 延时程序，可以降低位移速度
  u8g2.sendBuffer();                   // transfer internal memory to the display
}